package com.zz.dao;

import com.zz.pojo.Drug;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * Copyright Zz
 * FileName: DrugDao
 * Author:   Zz
 * Date:     2023/6/1019:24
 * Description:药品表Dao层
 * hISTORY:
 * <author>  <time>     <version>    <desc>
 * 作者姓名   修改时间       版本号       描述
 */
@Mapper
@Repository
public interface DrugDao {

    /**
     * 查询指定药品编号的药品信息
     * @param drugNumber 药品编号
     * @return 指定药品编号的药品信息
     */
    Drug queryDrugByNumber(@Param("number") long drugNumber);

    /**
     * 分页查询药品表信息
     *
     * @param map startIndex:起始下表 pageSize:页面大小
     * @return 药品list
     */
    List<Drug> queryDrugList(Map<String,Integer> map);

    /**
     * 查询药品数
     *
     * @return 药品数
     */
    int countDrug();

    /**
     * 通过传入信息查询相关药品信息
     * @param map 模糊查询的信息
     * @return 相关的药品信息
     */
    List<Drug> queryDrugByKey(Map<String,Object> map);

    /**
     * 查询符合模糊查询条件的药品数量
     * @param map 模糊查询的信息
     * @return 相关的药品信息条数
     */
    int countDurgByKey(Map<String,Object> map);

    /**
     * 增加药品信息
     *
     * @param drug 新的药品信息
     * @return 增加记录条数
     */
    int insertDrug(Drug drug);

    /**
     * 更新药品信息
     *
     * @param drug 更新后的药品信息
     * @return 修改记录条数
     */
    int updateDrug(Drug drug);

    /**
     * 删除指定药品
     *
     * @param drugNumber 药品编号
     * @return 删除记录条数
     */
    int deleteDrug(@Param("number") String drugNumber);
}
